'''
os模块
'''

'''
1.返回操作系统类型 ：posix 是linux操作系统，nt 是windows操作系统
'''
# import os
#
#
# print(os.name)
# print('Linux' if os.name == 'posix' else 'Windows')

'''
2.操作系统的详细信息
'''

# import os
#
# info = os.uname()
# print(info)
# print(info.sysname)
# print(info.nodename)

'''
3.系统的环境变量
'''

# import os
#
# print(os.environ)
# print('...........')
# print(os.environ.get('PATH'))

'''
4.判断是否是绝对路径
'''

# import os
#
# print(os.path.isabs('/tmp/ffff'))
# print(os.path.isabs('hello.jog'))

'''
5.获取当前路径
'''

# import os
#
# print(os.getcwd())

'''
6.生成绝对路径的三种方式
'''

# import os
#
# print(os.path.abspath('hello.png'))
# print(os.path.join(os.path.abspath('.'),'hello.jpg'))       ## .表示当前路径
# print(os.path.join('/home/kiosk','hello.jpg'))

'''
7.获取目录或文件名
'''

# import os
#
# filename = '/1234/year/month/day/hello.jpg'
# print(os.path.basename(filename))
# print(os.path.dirname(filename))


'''
8.返回指定目录下的所有文件名和目录名 ，返回的是一个列表
'''

# import os
#
# dir = os.getcwd()
# print(os.listdir(dir))

'''
9.分离后缀名和文件名
'''

# import os
#
# print(os.path.splitext('hello.jpg'))

'''
10.将目录名和文件名分离
'''

# import os
#
# print(os.path.split('/tmp/hello/hello.jpg'))

'''
11.创建目录【 mkdir / mkdir -p】
'''
#
# import os
#
# os.mkdir('img')
# os.makedirs('img/file1/file2')

'''
不能递归删除目录，一层一层删
OSError: [Errno 66] Directory not empty: 'img'
'''

# import os
#
# os.rmdir('img')

'''
12.可以删除多层递归的空目录，若目录中有文件则无法删除
'''

# import os
#
# os.removedirs('img/file1/file2')

'''
13.创建文件 删除文件
'''

# import os
#
# os.mknod('00_ok.txt')
# os.remove('00_ok.txt')

'''
14.文件重命名
'''
# import os
#
# os.rename('data.txt','data1.txt')


'''
15.判断文件或目录是否存在
'''

# import os
#
# print(os.path.exists(os.getcwd()))
# print(os.path.exists('/home/kiosk/PycharmProjects/2019python/ips.txt'))


'''
16.判断是否是文件或者目录
'''

# import os
#
# print(os.path.isfile('os库的使用.py'))
# print(os.path.isdir('../预备知识点'))

'''
17. 改变当前目录到指定目录中
'''

# import os
#
# print(os.getcwd())
# path='/tmp'
# os.chdir(path)
# print(os.getcwd())

'''
18.文件信息

Access:文件最近一次被访问的时间；当编辑器打开文件时，使用cat,more,less,grep,sed读取文件内容将会刷新 【 Access的时间，使用ls -lu可以读取当前的Access时间】

Modify:文件内容最近一次被修改的时间；当修改文件内容时Modify的时间将会刷新
【使用ls -l命令显示的是最近一次Modify时间】

Change:文件属性最近一次被修改的时间，对一个文件或则目录执行mv,chmod,chgrp命令，将会刷新Change 的时间【使用ls -lc可以查看最近一次Change的时间】

'''

# import  os
#
# print(os.path.getatime('os库的使用.py'))    #返回最近访问时间  （浮点型秒数）
# print(os.path.getctime('os库的使用.py'))    #返回文件创建时间
# print(os.path.getmtime('os库的使用.py'))    #返回最近文件修改时间
# print(os.path.getsize('os库的使用.py'))    #返回文件大小 （字节为单位）

'''
.......................练习.......................
1.在当前目录新建目录img, 里面包含多个文件, 文件名各不相同(X4G5.png)
2.将当前img目录所有以.png结尾的后缀名改为.jpg

'''

# import random
# import string
# import os
#
# def gen_code(len=4):
#     # 随机生成4位验证码
#     li = random.sample(string.ascii_letters+string.digits,len)
#     return ''.join(li)
# def create_file():
#     # 随机生成100个验证码
#     li = {gen_code() for i in range(100)}
#     os.mkdir('img')
#     for name in li:
#         os.mknod('img/' + name + '.png')
#
# create_file()
#
# def modify_suffix(dirname,old_suffix,new_suffix):
#     """
#     :param dirname:操作的目录
#     :param old_suffix: 之前的后缀名
#     :param new_suffix: 新的后缀名
#     :return:
#     """
#     # 1.判断查找的目录是否存在，如果不存在，报错
#     if os.path.exists(dirname):
#         # 2.找出所有以old_suffix(.png)结尾的文件
#         pngfile = [filename for filename in os.listdir(dirname)
#                    if filename.endswith(old_suffix)]
#         # 3.将后缀名和文件名分开，留下文件名
#         basefiles = [os.path.splitext(filename)[0]
#                      for filename in pngfile]
#         # 4.重命名文件
#         for filename in basefiles:
#             oldname = os.path.join(dirname,filename+old_suffix)
#             newname = os.path.join(dirname,filename+new_suffix)
#             os.rename(oldname,newname)
#             print('%s命名为%s成功' %(oldname,newname))
#     else:
#         print('%s不存在,不能操作...' %(dirname))
#
# modify_suffix('redhat','.jpg','.png')

'''
..........................练习.....................
利用time.time()方法，我们可以计算两个时间点之间的时间间隔
但是有些时候我们想要得到/etc/group文件的a/c/m的时间
对应的年月日这些信息
并保存再文件date.txt文件中
'''

# import os
# import time
#
# time1 = os.path.getctime(os.getcwd())     #时间戳时间
# print(time1)
# tuple_time = time.localtime(time1)
# print(tuple_time)
# year = tuple_time.tm_year
# month = tuple_time.tm_mon
# day = tuple_time.tm_mday
#
# with open('date.txt','a') as f:
#     f.write('%d %d %d' %(year,month,day))
#     f.write('\n')

